package br.com.fumec.main;

import br.com.fumec.maze.Franja;
import br.com.fumec.maze.No;
import br.com.fumec.maze.Problema;

public class Main {
	public static void main(String[] args) throws Exception {
		Problema problema = new Problema();
		
		Franja franja = new Franja();
		franja.insere(problema.getOrigem());
		
		
		while(!franja.vazia()){
			No atual = franja.primeiro();
			
			if(problema.isObjective(atual)){
				System.out.println("fim");
				System.exit(0);
			};
			
			No proximoNo = problema.getNextStep(atual);
			if(proximoNo == null){
				problema.move(problema.getReverseMovement(atual.getMovimento()));
				franja.removePrimeiro();
			}else{
				problema.move(proximoNo.getMovimento());
				proximoNo.setMovimentos(problema.getMoves().getMovements());
				proximoNo.removeMovement(problema.getReverseMovement(proximoNo.getMovimento()));
				atual.removeMovement(proximoNo.getMovimento());
				franja.insere(proximoNo);
			}
		}
	} 
}